const express = require('express')
const router = express.Router()
// 引入自己写的工具函数(生成token的函数)
const jwtManger = require('../utils/jwtManger')
// 引入密码加密的模块
const md5 = require('md5')
// 引入数据库中的数据
const adminModel = require('../db/modules/adminModule')
// ✨登录接口 http://localhost/login
router.post('/login',async (req,res)=>{
    // 获取客户端请求体中的数据
    let { username , password } = req.fields
    // 对比数据库中的数据，看是否存在该用户
    // findOne找到数据就是数据对象，找不到就是null
    // 注意：数据库中的密码是经过md5加密过的，直接传password会导致不一致，因此此处也需要加密
    let admin = await adminModel.findOne({ username , password:md5(password)})
    // 在此处获取到用户信息，传给客户端(为去除掉密码的一条数据)
    admin.password = ''
    if(admin){
        // 首先生成token
        const token = jwtManger.encodeToken(admin._id)
        // 将token更新到数据库
        await adminModel.updateOne({ _id: admin._id } , { $set:{ token , last_time:Date.now() } })
        // 将结果返回到客户端
        res.send({"code":1,"msg":"登录成功" , token , user:{'id':admin._id,"username":admin.username}})
    }else{
        // 登陆失败
        res.send({"code":0,"msg":"登录失败,账号或密码错误"})
    }
})
// ✨退出登录接口
router.get('/logout', async (req,res)=>{
    // console.log(req.query)
    // 
    const {id} = req.query
    await adminModel.updateOne({"_id":id},{ $set:{ token:"" } })
    res.send({"code":1,"msg":"退出登录"})
})
module.exports = router